# Uncrustify 0.46

#
# General options
#

# The type of line endings
newlines                                 = auto     # auto/lf/crlf/cr

# The original size of tabs in the input
input_tab_size                           = 4        # number

# The size of tabs in the output (only used if align_with_tabs=true)
output_tab_size                          = 4        # number

# The ascii value of the string escape char, usually 92 (\) or 94 (^). (Pawn)
string_escape_char                       = 92       # number

# Alternate string escape char for Pawn. Only works right before the quote char.
string_escape_char2                      = 0        # number

#
# Indenting
#

# The number of columns to indent per level.
# Usually 2, 3, 4, or 8.
indent_columns                           = 4        # number

# How to use tabs when indenting code
# 0=spaces only
# 1=indent with tabs, align with spaces
# 2=indent and align with tabs
indent_with_tabs                         = 0        # number

# Whether to indent strings broken by '\' so that they line up
indent_align_string                      = false    # false/true

# The number of spaces to indent multi-line XML strings.
# Requires indent_align_string=True
indent_xml_string                        = 0        # number

# Spaces to indent '{' from level
indent_brace                             = 0        # number

# Whether braces are indented to the body level
indent_braces                            = false    # false/true

# Disabled indenting function braces if indent_braces is true
indent_braces_no_func                    = false    # false/true

# Indent based on the size of the brace parent, ie 'if' => 3 spaces, 'for' => 4 spaces, etc.
indent_brace_parent                      = false    # false/true

# Whether the 'namespace' body is indented
indent_namespace                         = false    # false/true

# Whether the 'class' body is indented
indent_class                             = false    # false/true

# Whether to indent the stuff after a leading class colon
indent_class_colon                       = false    # false/true

# True:  indent continued function call parameters one indent level
# False: align parameters under the open paren
indent_func_call_param                   = false    # false/true

# Same as indent_func_call_param, but for function defs
indent_func_def_param                    = false    # false/true

# Same as indent_func_call_param, but for function protos
indent_func_proto_param                  = false    # false/true

# Same as indent_func_call_param, but for class declarations
indent_func_class_param                  = false    # false/true

# Same as indent_func_call_param, but for class variable constructors
indent_func_ctor_var_param               = false    # false/true

# Double the indent for indent_func_xxx_param options
indent_func_param_double                 = false    # false/true

# The number of spaces to indent a continued '->' or '.'
# Usually set to 0, 1, or indent_columns.
indent_member                            = 0        # number

# Spaces to indent single line ('//') comments on lines before code
indent_sing_line_comments                = 0        # number

# If set, will indent trailing single line ('//') comments relative
# to the code instead of trying to keep the same absolute column
indent_relative_single_line_comments     = false    # false/true

# Spaces to indent 'case' from 'switch'
# Usually 0 or indent_columns.
indent_switch_case                       = 4        # number

# Spaces to shift the 'case' line, without affecting any other lines
# Usually 0.
indent_case_shift                        = 0        # number

# Spaces to indent '{' from 'case'.
# By default, the brace will appear under the 'c' in case.
# Usually set to 0 or indent_columns.
indent_case_brace                        = 0        # number

# Whether to indent comments found in first column
indent_col1_comment                      = false    # false/true

# How to indent goto labels
#  >0 : absolute column where 1 is the leftmost column
#  <=0 : subtract from brace indent
indent_label                             = 1        # number

# Same as indent_label, but for access specifiers that are followed by a colon
indent_access_spec                       = 1        # number

# Indent the code after an access specifier by one level.
# If set, this option forces 'indent_access_spec=0'
indent_access_spec_body                  = false    # false/true

# If an open paren is followed by a newline, indent the next line so that it lines up after the open paren (not recommended)
indent_paren_nl                          = false    # false/true

# Controls the indent of a close paren after a newline.
# 0: Indent to body level
# 1: Align under the open paren
# 2: Indent to the brace level
indent_paren_close                       = 0        # number

# Controls the indent of a comma when inside a paren.If TRUE, aligns under the open paren
indent_comma_paren                       = false    # false/true

# Controls the indent of a BOOL operator when inside a paren.If TRUE, aligns under the open paren
indent_bool_paren                        = false    # false/true

# If an open square is followed by a newline, indent the next line so that it lines up after the open square (not recommended)
indent_square_nl                         = false    # false/true

# Don't change the relative indent of ESQL/C 'EXEC SQL' bodies
indent_preserve_sql                      = false    # false/true

#
# Spacing options
#

# Add or remove space around arithmetic operator '+', '-', '/', '*', etc
sp_arith                                 = add   # ignore/add/remove/force

# Add or remove space around assignment operator '=', '+=', etc
sp_assign                                = add   # ignore/add/remove/force

# Add or remove space around assignment '=' in enum
sp_enum_assign                           = add   # ignore/add/remove/force

# Add or remove space around boolean operators '&&' and '||'
sp_bool                                  = add   # ignore/add/remove/force

# Add or remove space around compare operator '<', '>', '==', etc
sp_compare                               = add   # ignore/add/remove/force

# Add or remove space inside '(' and ')'
sp_inside_paren                          = ignore   # ignore/add/remove/force

# Add or remove space between nested parens
sp_paren_paren                           = ignore   # ignore/add/remove/force

# Whether to balance spaces inside nested parens
sp_balance_nested_parens                 = false    # false/true

# Add or remove space between ')' and '{'
sp_paren_brace                           = ignore   # ignore/add/remove/force

# Add or remove space before pointer star '*'
sp_before_ptr_star                       = ignore   # ignore/add/remove/force

# Add or remove space between pointer stars '*'
sp_between_ptr_star                      = ignore   # ignore/add/remove/force

# Add or remove space after pointer star '*', if followed by a word.
sp_after_ptr_star                        = ignore   # ignore/add/remove/force

# Add or remove space before reference sign '&'
sp_before_byref                          = ignore   # ignore/add/remove/force

# Add or remove space after reference sign '&', if followed by a word.
sp_after_byref                           = ignore   # ignore/add/remove/force

# Add or remove space between type and word
sp_after_type                            = force    # ignore/add/remove/force

# Add or remove space before '<>'
sp_before_angle                          = ignore   # ignore/add/remove/force

# Add or remove space after '<>'
sp_after_angle                           = ignore   # ignore/add/remove/force

# Add or remove space between '<>' and '(' as found in 'new List<byte>();'
sp_angle_paren                           = ignore   # ignore/add/remove/force

# Add or remove space between '<>' and a word as in 'List<byte> m;'
sp_angle_word                            = ignore   # ignore/add/remove/force

# Add or remove space before '(' of 'if', 'for', 'switch', and 'while'
sp_before_sparen                         = add   # ignore/add/remove/force

# Add or remove space inside if-condition '(' and ')'
sp_inside_sparen                         = remove   # ignore/add/remove/force

# Add or remove space after ')' of 'if', 'for', 'switch', and 'while'
sp_after_sparen                          = add   # ignore/add/remove/force

# Add or remove space between ')' and '{' of 'if', 'for', 'switch', and 'while'
sp_sparen_brace                          = add   # ignore/add/remove/force

# Add or remove space before empty statement ';' on 'if', 'for' and 'while'
sp_special_semi                          = add   # ignore/add/remove/force

# Add or remove space before ';'
sp_before_semi                           = remove   # ignore/add/remove/force

# Add or remove space before ';' in non-empty 'for' statements
sp_before_semi_for                       = ignore   # ignore/add/remove/force

# Add or remove space before a semicolon of an empty part of a for statment.
sp_before_semi_for_empty                 = ignore   # ignore/add/remove/force

# Add or remove space after the final semicolon of an empty part of a for statment: for ( ; ; <here> ).
sp_after_semi_for_empty                  = ignore   # ignore/add/remove/force

# Add or remove space before '[' (except '[]')
sp_before_square                         = ignore   # ignore/add/remove/force

# Add or remove space before '[]'
sp_before_squares                        = ignore   # ignore/add/remove/force

# Add or remove space inside '[' and ']'
sp_inside_square                         = ignore   # ignore/add/remove/force

# Add or remove space after ','
sp_after_comma                           = add   # ignore/add/remove/force

# Add or remove space before ','
sp_before_comma                          = remove   # ignore/add/remove/force

# Add or remove space after class ':'
sp_after_class_colon                     = ignore   # ignore/add/remove/force

# Add or remove space before class ':'
sp_before_class_colon                    = ignore   # ignore/add/remove/force

# Add or remove space between 'operator' and operator sign
sp_after_operator                        = ignore   # ignore/add/remove/force

# Add or remove space after cast
sp_after_cast                            = ignore   # ignore/add/remove/force

# Add or remove spaces inside cast parens
sp_inside_paren_cast                     = ignore   # ignore/add/remove/force

# Add or remove space between 'sizeof' and '('
sp_sizeof_paren                          = remove   # ignore/add/remove/force

# Add or remove space after the tag keyword (Pawn)
sp_after_tag                             = ignore   # ignore/add/remove/force

# Add or remove space inside enum '{' and '}'
sp_inside_braces_enum                    = ignore   # ignore/add/remove/force

# Add or remove space inside struct/union '{' and '}'
sp_inside_braces_struct                  = ignore   # ignore/add/remove/force

# Add or remove space inside '{' and '}'
sp_inside_braces                         = ignore   # ignore/add/remove/force

# Add or remove space inside '<' and '>'
sp_inside_angle                          = ignore   # ignore/add/remove/force

# Add or remove space between return type and function name
# A minimum of 1 is forced except for pointer return types.
sp_type_func                             = add   # ignore/add/remove/force

# Add or remove space between function name and '(' on function declaration
sp_func_proto_paren                      = remove   # ignore/add/remove/force

# Add or remove space between function name and '(' on function definition
sp_func_def_paren                        = remove   # ignore/add/remove/force

# Add or remove space inside empty function '()'
sp_inside_fparens                        = remove   # ignore/add/remove/force

# Add or remove space inside function '(' and ')'
sp_inside_fparen                         = remove   # ignore/add/remove/force

# Add or remove space between ']' and '(' when part of a function call.
sp_square_fparen                         = ignore   # ignore/add/remove/force

# Add or remove space between ')' and '{' of function
sp_fparen_brace                          = ignore   # ignore/add/remove/force

# Add or remove space between function name and '(' on function calls
sp_func_call_paren                       = remove   # ignore/add/remove/force

# Add or remove space between a constructor/destructor and the open paren
sp_func_class_paren                      = ignore   # ignore/add/remove/force

# Add or remove space between 'return' and '('
sp_return_paren                          = ignore   # ignore/add/remove/force

# Add or remove space between '__attribute__' and '('
sp_attribute_paren                       = ignore   # ignore/add/remove/force

# Add or remove space between macro and value
sp_macro                                 = ignore   # ignore/add/remove/force

# Add or remove space between macro function ')' and value
sp_macro_func                            = ignore   # ignore/add/remove/force

# Add or remove space between 'else' and '{' if on the same line
sp_else_brace                            = add   # ignore/add/remove/force

# Add or remove space between '}' and 'else' if on the same line
sp_brace_else                            = ignore   # ignore/add/remove/force

# Add or remove space between 'catch' and '{' if on the same line
sp_catch_brace                           = ignore   # ignore/add/remove/force

# Add or remove space between '}' and 'catch' if on the same line
sp_brace_catch                           = ignore   # ignore/add/remove/force

# Add or remove space between 'finally' and '{' if on the same line
sp_finally_brace                         = ignore   # ignore/add/remove/force

# Add or remove space between '}' and 'finally' if on the same line
sp_brace_finally                         = ignore   # ignore/add/remove/force

# Add or remove space between 'try' and '{' if on the same line
sp_try_brace                             = ignore   # ignore/add/remove/force

# Add or remove space between get/set and '{' if on the same line
sp_getset_brace                          = ignore   # ignore/add/remove/force

# Add or remove space before the '::' operator
sp_before_dc                             = ignore   # ignore/add/remove/force

# Add or remove space after the '::' operator
sp_after_dc                              = ignore   # ignore/add/remove/force

# Add or remove around the D named array initializer ':' operator
sp_d_array_colon                         = ignore   # ignore/add/remove/force

# Add or remove space after the '!' (not) operator.
sp_not                                   = remove   # ignore/add/remove/force

# Add or remove space after the '~' (invert) operator.
sp_inv                                   = remove   # ignore/add/remove/force

# Add or remove space after the '&' (address-of) operator.
# This does not affect the spacing after a '&' that is part of a type.
sp_addr                                  = remove   # ignore/add/remove/force

# Add or remove space around the '.' or '->' operators
sp_member                                = remove   # ignore/add/remove/force

# Add or remove space after the '*' (dereference) operator.
# This does not affect the spacing after a '*' that is part of a type.
sp_deref                                 = remove   # ignore/add/remove/force

# Add or remove space after '+' or '-', as in 'x = -5' or 'y = +7'
sp_sign                                  = remove   # ignore/add/remove/force

# Add or remove space before or after '++' and '--', as in '(--x)' or 'y++;'
sp_incdec                                = remove   # ignore/add/remove/force

# Add or remove space after the scope '+' or '-', as in '-(void) foo;' or '+(int) bar;'
sp_after_oc_scope                        = ignore   # ignore/add/remove/force

# Add or remove space after the colon in message specs
# '-(int) f: (int) x;' vs '+(int) f : (int) x;'
sp_before_oc_colon                       = ignore   # ignore/add/remove/force

# Add or remove space after the (type) in message specs
# '-(int) f: (int) x;' vs '+(int)f : (int)x;'
sp_after_oc_type                         = ignore   # ignore/add/remove/force

#
# Code alignment (not left column spaces/tabs)
#

# Whether to keep non-indenting tabs
align_keep_tabs                          = false    # false/true

# Whether to use tabs for alinging
align_with_tabs                          = false    # false/true

# Whether to bump out to the next tab when aligning
align_on_tabstop                         = false    # false/true

# Whether to left-align numbers
align_number_left                        = false    # false/true

# Align variable definitions in prototypes and functions
align_func_params                        = false    # false/true

# The span for aligning variable definitions (0=don't align)
align_var_def_span                       = 10        # number

# How to align the star in variable definitions.
#  0=Part of the type
#  1=Part of the variable
#  2=Dangling
align_var_def_star_style                 = 1        # number

# How to align the '&' in variable definitions.
#  0=Part of the type
#  1=Part of the variable
#  2=Dangling
align_var_def_amp_style                  = 1        # number

# The threshold for aligning variable definitions (0=no limit)
align_var_def_thresh                     = 0        # number

# The gap for aligning variable definitions
align_var_def_gap                        = 0        # number

# Whether to align the colon in struct bit fields
align_var_def_colon                      = true    # false/true

# Whether to align inline struct/enum/union variable definitions
align_var_def_inline                     = false    # false/true

# The span for aligning on '=' in assignments (0=don't align)
align_assign_span                        = 10        # number

# The threshold for aligning on '=' in assignments (0=no limit)
align_assign_thresh                      = 4        # number

# The span for aligning on '=' in enums (0=don't align)
align_enum_equ_span                      = 10        # number

# The threshold for aligning on '=' in enums (0=no limit)
align_enum_equ_thresh                    = 0        # number

# The span for aligning struct/union (0=don't align)
align_var_struct_span                    = 0        # number

# The threshold for aligning struct/union member definitions (0=no limit)
align_var_struct_thresh                  = 0        # number

# The gap for aligning struct/union member definitions
align_var_struct_gap                     = 0        # number

# The span for aligning struct initializer values (0=don't align)
align_struct_init_span                   = 0        # number

# The minimum space between the type and the synonym of a typedef
align_typedef_gap                        = 0        # number

# The span for aligning single-line typedefs (0=don't align)
align_typedef_span                       = 0        # number

# How to align typedef'd functions with other typedefs
# 0: Don't mix them at all
# 1: align the open paren with the types
# 2: align the function type name with the other type names
align_typedef_func                       = 0        # number

# Controls the positioning of the '*' in typedefs. Just try it.
# 0: Align on typdef type, ignore '*'
# 1: The '*' is part of type name: typedef int  *pint;
# 2: The '*' is part of the type, but dangling: typedef int *pint;
align_typedef_star_style                 = 0        # number

# Controls the positioning of the '&' in typedefs. Just try it.
# 0: Align on typdef type, ignore '&'
# 1: The '&' is part of type name: typedef int  &pint;
# 2: The '&' is part of the type, but dangling: typedef int &pint;
align_typedef_amp_style                  = 0        # number

# The span for aligning comments that end lines (0=don't align)
align_right_cmt_span                     = 0        # number

# If aligning comments, mix with comments after '}' and #endif with less than 3 spaces before the comment
align_right_cmt_mix                      = false    # false/true

# The span for aligning function prototypes (0=don't align)
align_func_proto_span                    = 0        # number

# Minimum gap between the return type and the function name.
align_func_proto_gap                     = 0        # number

# Whether to mix aligning prototype and variable declarations.
# If true, align_var_def_XXX options are used instead of align_func_proto_XXX options.
align_mix_var_proto                      = false    # false/true

# Align single-line functions with function prototypes, uses align_func_proto_span
align_single_line_func                   = false    # false/true

# Aligning the open brace of single-line functions.
# Requires align_single_line_func=true, uses align_func_proto_span
align_single_line_brace                  = false    # false/true

# Gap for align_single_line_brace.
align_single_line_brace_gap              = 0        # number

# The span for aligning ObjC msg spec (0=don't align)
align_oc_msg_spec_span                   = 0        # number

# Whether to align macros wrapped with a backslash and a newline.
# This will not work right if the macro contains a multi-line comment.
align_nl_cont                            = false    # false/true

# The minimum space between label and value of a preprocessor define
align_pp_define_gap                      = 0        # number

# The span for aligning on '#define' bodies (0=don't align)
align_pp_define_span                     = 0        # number

#
# Newline adding and removing options
#

# Whether to collapse empty blocks between '{' and '}'
nl_collapse_empty_body                   = false    # false/true

# Don't split one-line braced assignments - 'foo_t f = { 1, 2 };'
nl_assign_leave_one_liners               = false    # false/true

# Don't split one-line braced statements inside a class xx { } body
nl_class_leave_one_liners                = false    # false/true

# Don't split one-line enums: 'enum foo { BAR = 15 };'
nl_enum_leave_one_liners                 = false    # false/true

# Don't split one-line get or set functions
nl_getset_leave_one_liners               = false    # false/true

# Don't split one-line function definitions - 'int foo() { return 0; }'
nl_func_leave_one_liners                 = false    # false/true

# Don't split one-line if/else statements - 'if(a) b++;'
nl_if_leave_one_liners                   = false    # false/true

# Add or remove newlines at the start of the file
nl_start_of_file                         = ignore   # ignore/add/remove/force

# The number of newlines at the start of the file (only used if nl_start_of_file is 'add' or 'force'
nl_start_of_file_min                     = 0        # number

# Add or remove newline at the end of the file
nl_end_of_file                           = add   # ignore/add/remove/force

# The number of newlines at the end of the file (only used if nl_end_of_file is 'add' or 'force')
nl_end_of_file_min                       = 1        # number

# Add or remove newline between '=' and '{'
nl_assign_brace                          = add   # ignore/add/remove/force

# Add or remove newline between '=' and '[' (D only)
nl_assign_square                         = ignore   # ignore/add/remove/force

# Add or remove newline after '= [' (D only). Will also affect the newline before the ']'
nl_after_square_assign                   = ignore   # ignore/add/remove/force

# The number of newlines after a block of variable definitions
nl_func_var_def_blk                      = 1        # number

# Add or remove newline between a function call's ')' and '{', as in:
# list_for_each(item, &list) { }
nl_fcall_brace                           = ignore   # ignore/add/remove/force

# Add or remove newline between 'enum' and '{'
nl_enum_brace                            = add   # ignore/add/remove/force

# Add or remove newline between 'struct and '{'
nl_struct_brace                          = add   # ignore/add/remove/force

# Add or remove newline between 'union' and '{'
nl_union_brace                           = add   # ignore/add/remove/force

# Add or remove newline between 'if' and '{'
nl_if_brace                              = add   # ignore/add/remove/force

# Add or remove newline between '}' and 'else'
nl_brace_else                            = add   # ignore/add/remove/force

# Add or remove newline between 'else if' and '{'
# If set to ignore, nl_if_brace is used instead
nl_elseif_brace                          = add   # ignore/add/remove/force

# Add or remove newline between 'else' and '{'
nl_else_brace                            = add   # ignore/add/remove/force

# Add or remove newline between '}' and 'finally'
nl_brace_finally                         = ignore   # ignore/add/remove/force

# Add or remove newline between 'finally' and '{'
nl_finally_brace                         = ignore   # ignore/add/remove/force

# Add or remove newline between 'try' and '{'
nl_try_brace                             = ignore   # ignore/add/remove/force

# Add or remove newline between get/set and '{'
nl_getset_brace                          = ignore   # ignore/add/remove/force

# Add or remove newline between 'for' and '{'
nl_for_brace                             = add   # ignore/add/remove/force

# Add or remove newline between 'catch' and '{'
nl_catch_brace                           = ignore   # ignore/add/remove/force

# Add or remove newline between '}' and 'catch'
nl_brace_catch                           = ignore   # ignore/add/remove/force

# Add or remove newline between 'while' and '{'
nl_while_brace                           = add   # ignore/add/remove/force

# Add or remove newline between 'do' and '{'
nl_do_brace                              = add   # ignore/add/remove/force

# Add or remove newline between '}' and 'while' of 'do' statement
nl_brace_while                           = ignore   # ignore/add/remove/force

# Add or remove newline between 'switch' and '{'
nl_switch_brace                          = add   # ignore/add/remove/force

# Add or remove newline when condition spans two or more lines
nl_multi_line_cond                       = false    # false/true

# Force a newline in a define after the macro name for multi-line defines.
nl_multi_line_define                     = false    # false/true

# Whether to put a newline before 'case' statement
nl_before_case                           = true    # false/true

# Whether to put a newline after 'case' statement
nl_after_case                            = true    # false/true

# Newline between namespace and {
nl_namespace_brace                       = ignore   # ignore/add/remove/force

# Add or remove newline between 'template<>' and 'class'
nl_template_class                        = ignore   # ignore/add/remove/force

# Add or remove newline between 'class' and '{'
nl_class_brace                           = ignore   # ignore/add/remove/force

# Add or remove newline after each ',' in the constructor member initialization
nl_class_init_args                       = ignore   # ignore/add/remove/force

# Add or remove newline between return type and function name in definition
nl_func_type_name                        = ignore   # ignore/add/remove/force

# Add or remove newline between return type and function name in a prototype
nl_func_proto_type_name                  = ignore   # ignore/add/remove/force

# Add or remove newline between a function name and the opening '('
nl_func_paren                            = ignore   # ignore/add/remove/force

# Add or remove newline after '(' in a function declaration
nl_func_decl_start                       = ignore   # ignore/add/remove/force

# Add or remove newline after each ',' in a function declaration
nl_func_decl_args                        = ignore   # ignore/add/remove/force

# Add or remove newline before the ')' in a function declaration
nl_func_decl_end                         = ignore   # ignore/add/remove/force

# Add or remove newline between function signature and '{'
nl_fdef_brace                            = add   # ignore/add/remove/force

# Whether to put a newline after 'return' statement
nl_after_return                          = true    # false/true

# Whether to put a newline after semicolons, except in 'for' statements
nl_after_semicolon                       = true    # false/true

# Whether to put a newline after brace open.
# This also adds a newline before the matching brace close.
nl_after_brace_open                      = true    # false/true

# If nl_after_brace_open and nl_after_brace_open_cmt are true, a newline is
# placed between the open brace and a trailing single-line comment.
nl_after_brace_open_cmt                  = true    # false/true

# Whether to put a newline after a virtual brace open.
# These occur in un-braced if/while/do/for statement bodies.
nl_after_vbrace_open                     = false    # false/true

# Whether to alter newlines in '#define' macros
nl_define_macro                          = false    # false/true

# Whether to not put blanks after '#ifxx', '#elxx', or before '#endif'
nl_squeeze_ifdef                         = false    # false/true

# Add or remove newline before 'if'
nl_before_if                             = ignore   # ignore/add/remove/force

# Add or remove newline after 'if'
nl_after_if                              = ignore   # ignore/add/remove/force

# Add or remove newline before 'for'
nl_before_for                            = ignore   # ignore/add/remove/force

# Add or remove newline after 'for'
nl_after_for                             = ignore   # ignore/add/remove/force

# Add or remove newline before 'while'
nl_before_while                          = ignore   # ignore/add/remove/force

# Add or remove newline after 'while'
nl_after_while                           = ignore   # ignore/add/remove/force

# Add or remove newline before 'switch'
nl_before_switch                         = ignore   # ignore/add/remove/force

# Add or remove newline after 'switch'
nl_after_switch                          = ignore   # ignore/add/remove/force

# Add or remove newline before 'do'
nl_before_do                             = ignore   # ignore/add/remove/force

# Add or remove newline after 'do'
nl_after_do                              = ignore   # ignore/add/remove/force

# Whether to double-space commented-entries in struct/enum
nl_ds_struct_enum_cmt                    = false    # false/true

# Whether to double-space before the close brace of a struct/union/enum
nl_ds_struct_enum_close_brace            = false    # false/true

# Add or remove a newline around a class colon.
# Related to pos_class_colon, nl_class_init_args, and pos_comma.
nl_class_colon                           = ignore   # ignore/add/remove/force

# Change simple unbraced if statements into a one-liner
# 'if(b)\n i++;' => 'if(b) i++;'
nl_create_if_one_liner                   = false    # false/true

# Change simple unbraced for statements into a one-liner
# 'for (i=0;i<5;i++)\n foo(i);' => 'for (i=0;i<5;i++) foo(i);'
nl_create_for_one_liner                  = false    # false/true

# Change simple unbraced while statements into a one-liner
# 'while (i<5)\n foo(i++);' => 'while (i<5) foo(i++);'
nl_create_while_one_liner                = false    # false/true

#
# Positioning options
#

# The position of boolean operators in wrapped expressions
pos_bool                                 = ignore   # ignore/lead/trail

# The position of the comma in wrapped expressions
pos_comma                                = ignore   # ignore/lead/trail

# The position of the comma in the constructor initialization list
pos_class_comma                          = ignore   # ignore/lead/trail

# The position of colons between constructor and member initialization
pos_class_colon                          = ignore   # ignore/lead/trail

#
# Line Splitting options
#

# Try to limit code width to N number of columns
code_width                               = 0        # number

# Whether to fully split long 'for' statements at semi-colons
ls_for_split_full                        = false    # false/true

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

#
# Blank line options
#

# The maximum consecutive newlines
nl_max                                   = 0        # number

# The number of newlines after a function prototype, if followed by another function prototype
nl_after_func_proto                      = 0        # number

# The number of newlines after a function prototype, if not followed by another function prototype
nl_after_func_proto_group                = 4        # number

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

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

# The minimum number of newlines before a multi-line comment.
# Doesn't apply if after a brace open or another multi-line comment.
nl_before_block_comment                  = 0        # number

# The minimum number of newlines before a single-line C comment.
# Doesn't apply if after a brace open or other single-line C comments.
nl_before_c_comment                      = 0        # number

# The minimum number of newlines before a CPP comment.
# Doesn't apply if after a brace open or other CPP comments.
nl_before_cpp_comment                    = 0        # number

# Whether to force a newline after a mulit-line comment.
nl_after_multiline_comment               = false    # false/true

# The number of newlines before a 'private:', 'public:', 'protected:', 'signals:', or 'slots:' label.
# Will not change the newline count if after a brace open.
# 0 = No change.
nl_before_access_spec                    = 0        # number

# The number of newlines after a 'private:', 'public:', 'protected:', 'signals:', or 'slots:' label.
# 0 = No change.
nl_after_access_spec                     = 0        # number

# Whether to remove blank lines after '{'
eat_blanks_after_open_brace              = false    # false/true

# Whether to remove blank lines before '}'
eat_blanks_before_close_brace            = false    # false/true

#
# Code modifying options (non-whitespace)
#

# Add or remove braces on single-line 'do' statement
mod_full_brace_do                        = add   # ignore/add/remove/force

# Add or remove braces on single-line 'for' statement
mod_full_brace_for                       = add   # ignore/add/remove/force

# Add or remove braces on single-line function defintions. (Pawn)
mod_full_brace_function                  = ignore   # ignore/add/remove/force

# Add or remove braces on single-line 'if' statement
mod_full_brace_if                        = add   # ignore/add/remove/force

# Don't remove braces around statements that span N newlines
mod_full_brace_nl                        = 0        # number

# Add or remove braces on single-line 'while' statement
mod_full_brace_while                     = add   # ignore/add/remove/force

# Add or remove unnecessary paren on 'return' statement
mod_paren_on_return                      = ignore   # ignore/add/remove/force

# Whether to change optional semicolons to real semicolons
mod_pawn_semicolon                       = false    # false/true

# Add parens on 'while' and 'if' statement around bools
mod_full_paren_if_bool                   = false    # false/true

# Whether to remove superfluous semicolons
mod_remove_extra_semicolon               = true    # false/true

# If a function body exceeds the specified number of newlines and doesn't have a comment after
# the close brace, a comment will be added.
mod_add_long_function_closebrace_comment = 50        # number

# If a switch body exceeds the specified number of newlines and doesn't have a comment after
# the close brace, a comment will be added.
mod_add_long_switch_closebrace_comment   = 50        # number

# If TRUE, will sort consecutive single-line 'import' statements [Java, D]
mod_sort_import                          = false    # false/true

# If TRUE, will sort consecutive single-line 'using' statements [C#]
mod_sort_using                           = false    # false/true

# If TRUE, will sort consecutive single-line '#include' statements [C/C++] and '#import' statements [Obj-C]
# This is generally a bad idea, as it may break your code.
mod_sort_include                         = false    # false/true

#
# Comment modifications
#

# Try to wrap comments at cmt_width columns
cmt_width                                = 0        # number

# Whether to mess with the indent of multi-line comments
cmt_indent_multi                         = true     # false/true

# Whether to group c-comments that look like they are in a block
cmt_c_group                              = false    # false/true

# Whether to put an empty '/*' on the first line of the combined c-comment
cmt_c_nl_start                           = false   # false/true

# Whether to put a newline before the closing '*/' of the combined c-comment
cmt_c_nl_end                             = false    # false/true

# Whether to group cpp-comments that look like they are in a block
cmt_cpp_group                            = false    # false/true

# Whether to put an empty '/*' on the first line of the combined cpp-comment
cmt_cpp_nl_start                         = false    # false/true

# Whether to put a newline before the closing '*/' of the combined cpp-comment
cmt_cpp_nl_end                           = false    # false/true

# Whether to change cpp-comments into c-comments
cmt_cpp_to_c                             = false    # false/true

# Whether to put a star on subsequent comment lines
cmt_star_cont                            = false    # false/true

# The number of spaces to insert at the start of subsequent comment lines
cmt_sp_before_star_cont                  = 1        # number

# The number of spaces to insert after the star on subsequent comment lines
cmt_sp_after_star_cont                   = 0        # number

# The filename that contains text to insert at the head of a file if the file doesn't start with a C/C++ comment.
# Will substitue $(filename) with the current file's name.
cmt_insert_file_header                   = "file_header.txt"         # string
cmt_insert_file_footer                   = "file_footer.txt"         # string

# The filename that contains text to insert before a function implementation if the function isn't preceeded with a C/C++ comment.
# Will substitue $(function) with the function name and $(javaparam) with the javadoc @param and @return stuff.
# Will also substitute $(fclass) with the class name: void CFoo::Bar() { ... }
cmt_insert_func_header                   = "function_header.txt"         # string

# The filename that contains text to insert before a class if the class isn't preceeded with a C/C++ comment.
# Will substitue $(class) with the class name.
cmt_insert_class_header                  = ""         # string

#
# Preprocessor options
#

# Control indent of preprocessors inside #if blocks at brace level 0
pp_indent                                = ignore   # ignore/add/remove/force

# Whether to indent #if/#else/#endif at the brace level (true) or from column 1 (false)
pp_indent_at_level                       = true    # false/true

# Add or remove space after # based on pp_level of #if blocks
pp_space                                 = ignore   # ignore/add/remove/force

# Sets the number of spaces added with pp_space
pp_space_count                           = 0        # number

# The indent for #region and #endregion in C# and '#pragma region' in C/C++
pp_indent_region                         = 0        # number

# Whether to indent the code between #region and #endregion
pp_region_indent_code                    = false    # false/true

# If pp_indent_at_level=true, sets the indent for #if, #else, and #endif when not at file-level
pp_indent_if                             = 0        # number

# Control whether to indent the code between #if, #else and #endif when not at file-level
pp_if_indent_code                        = true    # false/true

# Whether to indent '#define' at the brace level (true) or from column 1 (false)
pp_define_at_level                       = true    # false/true

# You can force a token to be a type with the 'type' option.
# Example:
# type myfoo1 myfoo2
#
# You can create custom macro-based indentation using macro-open, 
# macro-else and macro-close.
# Example:
# macro-open  BEGIN_TEMPLATE_MESSAGE_MAP
# macro-open  BEGIN_MESSAGE_MAP
# macro-close END_MESSAGE_MAP
