#
# uncrustify config file for objective-c and objective-c++
#
# $Id: objc.cfg 488 2009-10-08 12:44:38Z andreberg $
#

indent_with_tabs	    = 0		# 1=indent to level only, 2=indent with tabs
output_tab_size		    = 4		# new tab size
indent_columns		    = output_tab_size
indent_label		    = 2		# pos: absolute col, neg: relative column
indent_align_assign     = FALSE

#
# Indenting
#

# indent_brace		    = 0
indent_switch_case      = indent_columns

#
# Inter-symbol newlines
#

nl_enum_brace		    = remove	# "enum {" vs "enum \n {"
nl_union_brace		    = remove	# "union {" vs "union \n {"
nl_struct_brace		    = remove	# "struct {" vs "struct \n {"
nl_do_brace 		    = remove	# "do {" vs "do \n {"
nl_if_brace 		    = remove	# "if () {" vs "if () \n {"
nl_for_brace 		    = remove	# "for () {" vs "for () \n {"
nl_else_brace 		    = remove	# "else {" vs "else \n {"
nl_while_brace 		    = remove	# "while () {" vs "while () \n {"
nl_switch_brace 	    = remove	# "switch () {" vs "switch () \n {"
nl_brace_while		    = remove	# "} while" vs "} \n while" - cuddle while
nl_brace_else		    = remove	# "} else" vs "} \n else" - cuddle else
nl_func_var_def_blk	    = 1
nl_fcall_brace		    = remove	# "list_for_each() {" vs "list_for_each()\n{"
nl_fdef_brace		    = remove    # "int foo() {" vs "int foo()\n{"
# nl_after_return	    = TRUE;
# nl_before_case	    = 1


#
# Source code modifications
#

mod_paren_on_return	    = ignore	# "return 1;" vs "return (1);"
mod_full_brace_if	    = ignore    # "if (a) a--;" vs "if (a) { a--; }"
mod_full_brace_for	    = add     	# "for () a--;" vs "for () { a--; }"
mod_full_brace_do	    = ignore	# "do a--; while ();" vs "do { a--; } while ();"
mod_full_brace_while	= remove	# "while (a) a--;" vs "while (a) { a--; }"
mod_full_brace_nl	    = 3		    # don't remove if more than 3 newlines
mod_add_long_ifdef_endif_comment            = 20
mod_add_long_ifdef_else_comment             = mod_add_long_ifdef_else_comment
mod_add_long_switch_closebrace_comment      = mod_add_long_ifdef_else_comment
mod_add_long_function_closebrace_comment    = mod_add_long_ifdef_else_comment

#
# Inter-character spacing options
#

# sp_return_paren	        = force		# "return (1);" vs "return(1);"
sp_sizeof_paren		        = remove	# "sizeof (int)" vs "sizeof(int)"
sp_before_sparen	        = force		# "if (" vs "if("
sp_after_sparen		        = force		# "if () {" vs "if (){"
sp_after_cast		        = remove	# "(int) a" vs "(int)a"
sp_inside_braces	        = add		# "{ 1 }" vs "{1}"
sp_inside_braces_struct	    = add		# "{ 1 }" vs "{1}"
sp_inside_braces_enum	    = add		# "{ 1 }" vs "{1}"
sp_inside_fparen            = remove    # "func( param )" vs "func(param)"
sp_paren_brace              = force
sp_assign		            = add
sp_arith		            = add
sp_bool			            = add
sp_compare		            = add
sp_assign		            = add
sp_after_comma		        = add
sp_func_def_paren	        = remove	# "int foo (){" vs "int foo(){"
sp_func_call_paren	        = remove	# "foo (" vs "foo("
sp_func_proto_paren	        = remove	# "int foo ();" vs "int foo();"
sp_before_ptr_star          = force 
sp_after_ptr_star           = force
sp_before_unnamed_ptr_star  = ignore
sp_between_ptr_star         = remove
sp_after_ptr_star_func      = force
sp_before_ptr_star_func     = force
sp_cmt_cpp_start            = add
sp_cond_question            = force
sp_cond_colon               = force
sp_else_brace               = force
sp_brace_else               = force
sp_after_class_colon        = force
sp_before_class_colon       = force
sp_before_case_colon        = remove
# Objective-C specifics 
sp_before_oc_colon          = remove
sp_after_oc_colon           = remove
sp_after_oc_scope           = force
sp_after_oc_type            = remove
sp_after_oc_return_type     = force
sp_before_send_oc_colon     = remove
sp_after_send_oc_colon      = remove
sp_after_oc_at_sel          = remove

#
# Aligning stuff
#

align_with_tabs		        = False		# use tabs to align
align_on_tabstop	        = False		# align on tabstops
# align_keep_tabs	        = True
align_enum_equ_span	        = 4		    # '=' in enum definition
# align_nl_cont		        = True
# align_var_def_span	    = 2
# align_var_def_inline	    = True
# align_var_def_star	    = False
# align_var_def_colon	    = True
# align_assign_span	        = 1
align_struct_init_span	    = 4		    # align stuff in a structure init '= { }'
align_right_cmt_span	    = 8
align_right_cmt_gap         = 8
align_pp_define_span	    = 8
#align_pp_define_gap	    = 8

# Objective-C specifics
align_oc_msg_colon_span     = 1        # align parameters in an Obj-C message on the ':' but stop after this many lines (0=don't align)
align_oc_msg_spec_span      = 0        # the span for aligning ObjC msg spec (0=don't align)

#
# Line Splitting options
#

# ls_func_split_full        = True     # Whether to fully split long function protos/calls at commas

#
# Comment modifications
#

cmt_star_cont		        = True     # Whether to put a star on subsequent comment lines



