#
# uncrustify config file for objective-c and objective-c++
#

indent_with_tabs        = 2     # 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
indent_oc_block = true
indent_oc_block_msg_xcode_style = false
indent_oc_msg_prioritize_first_colon = true
align_keep_extra_space = FALSE  # keep extra space or remove it from the beginning of a line?":"
indent_braces = false
#indent_paren_open_brace = true

#
# 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        = add   # "} while" vs "} \n while" - cuddle while
nl_brace_else         = add   # "} else" vs "} \n else" - cuddle else
nl_func_var_def_blk   = 1                # add new lines after a block of variable decls
nl_fcall_brace        = add   # "list_for_each() {" vs "list_for_each()\n{"
nl_fdef_brace         = add   # "int foo() {" vs "int foo()\n{"
nl_after_return       = false
#nl_before_case        = true
#ml_after_case         = true
# Force a newline in a define after the macro name for multi-line defines.
nl_multi_line_define  = true    # false/true
# Add a newline between ')' and '{' if the ')' is on a different line than the if/for/etc.
# Overrides nl_for_brace, nl_if_brace, nl_switch_brace, nl_while_switch, and nl_catch_brace.
nl_multi_line_cond                       = true    # false/true

# The number of newlines after '}' of a multi-line function body
nl_after_func_body                       = 2        # number

# The number of newlines after '}' of a single line function body
nl_after_func_body_one_liner             = 2        # number

#
# Source code modifications
#

mod_paren_on_return                       = ignore # "return 1;" vs "return (1);"
mod_full_brace_if                         = force    # "if (a) a--;" vs "if (a) { a--; }"
mod_full_brace_for                        = force       # "for () a--;" vs "for () { a--; }"
mod_full_brace_do                         = force # "do a--; while ();" vs "do { a--; } while ();"
mod_full_brace_while                      = force # "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_inside_sparen             = remove
sp_paren_brace               = force
# Add or remove space between ') ' and ' {' of function
sp_fparen_brace              = force   # ignore/add/remove/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            = remove
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             = add
sp_cond_colon                = add
sp_cond_ternary_short        = remove   # a ?: b (as opposed to a ? b : c)
sp_else_brace                = force
sp_brace_else                = force
sp_after_class_colon         = force
sp_before_class_colon        = force
sp_before_case_colon         = remove
#sp_after_case_colon          = force
#sp_case_label                = force
# 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      = remove
sp_before_send_oc_colon      = remove
sp_after_send_oc_colon       = remove
sp_after_oc_at_sel           = remove
sp_before_oc_block_caret     = remove     # should have a space in most cases but it looks kinda ugly after a colon in a list of arguments
sp_after_oc_block_caret      = 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            = 0
align_var_def_inline          = False
#align_var_def_star            = False
align_var_def_colon           = False
align_assign_span             = 0
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_typedef_span		          = 5
align_typedef_gap			  = 3
# Objective-C specifics
align_oc_msg_colon_span       = 10         # 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)
align_oc_decl_colon			  = true
#
# 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


eat_blanks_before_close_brace	= TRUE
eat_blanks_after_open_brace	= TRUE
