#
# My favorite format
#

newlines                        = auto		# AUTO (default), DOS, MAC, or UNIX

indent_with_tabs		= 0		# 1=indent to level only, 2=indent with tabs
input_tab_size			= 8		# original tab size
output_tab_size			= 4		# new tab size
indent_columns			= output_tab_size
indent_label			= 1		# pos: absolute col, neg: relative column
indent_align_string		= False		# align broken strings
indent_brace			= 0
indent_case_brace		= indent_columns
indent_class			= true

nl_start_of_file		= remove
# nl_start_of_file_min		= 0
nl_end_of_file			= force
nl_end_of_file_min		= 1

nl_assign_brace			= remove	# "= {" vs "= \n {"
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_func_var_def_blk		= 1
nl_before_case			= 1
nl_fcall_brace			= remove	# "foo() {" vs "foo()\n{"
nl_fdef_brace			= remove	# "int foo() {" vs "int foo()\n{"
nl_after_return			= TRUE
nl_brace_while			= remove
nl_brace_else			= add
nl_squeeze_ifdef		= TRUE
nl_after_brace_open             = TRUE

mod_paren_on_return		= add		# "return 1;" vs "return (1);"
mod_full_brace_if		= add		# "if (a) a--;" vs "if (a) { a--; }"
mod_full_brace_for		= add		# "for () a--;" vs "for () { a--; }"
mod_full_brace_do		= add		# "do a--; while ();" vs "do { a--; } while ();"
mod_full_brace_while		= add		# "while (a) a--;" vs "while (a) { a--; }"

sp_before_byref			= remove
sp_before_semi			= remove
sp_paren_paren			= remove	# space between (( and ))
sp_return_paren			= remove	# "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		= force		# "{ 1 }" vs "{1}"
sp_inside_braces_struct		= force		# "{ 1 }" vs "{1}"
sp_inside_braces_enum		= force		# "{ 1 }" vs "{1}"
sp_inside_paren			= remove
sp_inside_fparen		= remove
sp_inside_sparen		= remove
sp_inside_square		= remove
#sp_type_func			= ignore
sp_assign			= force
sp_arith			= force
sp_bool				= force
sp_compare			= force
sp_assign			= force
sp_after_comma			= force
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_func_class_paren		= remove
sp_before_angle			= force
sp_after_angle			= force
sp_inside_angle			= remove
sp_else_brace			= force
sp_paren_brace                  = force
sp_fparen_brace                 = force
sp_range                        = remove
sp_before_template_paren        = force

align_with_tabs			= FALSE		# use tabs to align
align_on_tabstop		= FALSE		# align on tabstops
align_enum_equ_span		= 4
align_nl_cont			= TRUE
align_var_def_span		= 2
align_var_def_inline		= TRUE
align_var_def_star_style	= 1
align_var_def_colon		= TRUE
align_assign_span		= 1
align_struct_init_span		= 3
align_var_struct_span		= 99
align_right_cmt_span		= 3
align_pp_define_span		= 3
align_pp_define_gap		= 4
align_number_left		= TRUE
align_typedef_span		= 5
align_typedef_gap		= 3

cmt_star_cont			= TRUE

eat_blanks_before_close_brace	= TRUE
eat_blanks_after_open_brace	= TRUE
nl_assign_square = remove
sp_inside_square = remove
sp_d_array_colon = force
nl_after_square_assign = force


