# Configuration file for Uncrustify code formatter.
# https://github.com/uncrustify/uncrustify
#
# Created with https://cdanu.github.io/uncrustify_config_preview/index.html
#
# You may apply it for your code with:
# uncrustify -l CPP -c uncrustify.cfg -f filename.cpp
#
# This config is in beta: it doesn't implement our style guide perfectly.
# It's not recommended to apply it for existing code base.

newlines                        = lf
input_tab_size                  = 4
output_tab_size                 = 4
string_replace_tab_chars        = true
utf8_bom                        = remove
utf8_byte                       = true
utf8_force                      = true
sp_arith                        = force
sp_assign                       = force
sp_cpp_lambda_assign            = remove
sp_cpp_lambda_paren             = remove
sp_assign_default               = force
sp_enum_assign                  = force
sp_enum_colon                   = force
sp_pp_concat                    = force
sp_pp_stringify                 = remove
sp_bool                         = force
sp_compare                      = force
sp_inside_paren                 = remove
sp_paren_paren                  = remove
sp_paren_brace                  = force
sp_before_ptr_star              = force
sp_between_ptr_star             = remove
sp_after_ptr_star               = force
sp_after_ptr_star_qualifier     = force
sp_after_ptr_star_func          = force
sp_ptr_star_paren               = force
sp_before_ptr_star_func         = force
sp_before_byref                 = force
sp_before_unnamed_byref         = force
sp_after_byref                  = force
sp_after_byref_func             = force
sp_before_byref_func            = force
sp_template_angle               = force
sp_before_angle                 = remove
sp_inside_angle                 = remove
sp_angle_colon                  = force
sp_after_angle                  = force
sp_angle_paren                  = remove
sp_angle_paren_empty            = remove
sp_angle_word                   = force
sp_angle_shift                  = remove
sp_permit_cpp11_shift           = true
sp_before_sparen                = force
sp_inside_sparen                = remove
sp_after_sparen                 = force
sp_sparen_brace                 = force
sp_special_semi                 = force
sp_before_semi_for              = remove
sp_before_semi_for_empty        = remove
sp_after_semi                   = force
sp_after_semi_for_empty         = remove
sp_before_square                = remove
sp_before_squares               = remove
sp_inside_square                = remove
sp_after_comma                  = force
sp_before_ellipsis              = remove
sp_after_class_colon            = force
sp_before_class_colon           = force
sp_after_constr_colon           = force
sp_before_constr_colon          = force
sp_after_operator               = remove
sp_after_operator_sym           = remove
sp_after_cast                   = remove
sp_inside_paren_cast            = remove
sp_cpp_cast_paren               = remove
sp_sizeof_paren                 = remove
sp_inside_braces_enum           = force
sp_inside_braces_struct         = force
sp_inside_braces                = force
sp_inside_braces_empty          = remove
sp_type_func                    = force
sp_func_proto_paren             = remove
sp_func_proto_paren_empty       = remove
sp_func_def_paren               = remove
sp_func_def_paren_empty         = remove
sp_inside_fparens               = remove
sp_inside_fparen                = remove
sp_inside_tparen                = remove
sp_after_tparen_close           = remove
sp_square_fparen                = remove
sp_fparen_brace                 = force
sp_func_call_paren              = remove
sp_func_class_paren             = remove
sp_func_class_paren_empty       = remove
sp_return_paren                 = force
sp_attribute_paren              = remove
sp_defined_paren                = remove
sp_throw_paren                  = force
sp_after_throw                  = force
sp_catch_paren                  = force
sp_macro                        = add
sp_macro_func                   = add
sp_else_brace                   = force
sp_brace_else                   = force
sp_brace_typedef                = force
sp_catch_brace                  = force
sp_brace_catch                  = force
sp_try_brace                    = force
sp_word_brace                   = remove
sp_word_brace_ns                = force
sp_before_dc                    = remove
sp_after_dc                     = remove
sp_cond_colon                   = force
sp_cond_colon_before            = force
sp_cond_colon_after             = force
sp_cond_question                = force
sp_cond_question_before         = force
sp_cond_question_after          = force
sp_cond_ternary_short           = remove
sp_cmt_cpp_start                = force
sp_cmt_cpp_doxygen              = true
sp_cmt_cpp_qttr                 = true
sp_endif_cmt                    = force
sp_after_new                    = force
sp_between_new_paren            = remove
sp_after_newop_paren            = force
sp_inside_newop_paren           = remove
sp_before_tr_emb_cmt            = force
indent_columns                  = 4
indent_with_tabs                = 0
indent_namespace                = false
indent_namespace_limit          = 100
indent_class                    = true
indent_ctor_init_leading        = 1
indent_shift                    = true
indent_func_call_param          = true
indent_func_def_param           = true
indent_func_proto_param         = true
indent_func_class_param         = true
indent_func_ctor_var_param      = true
indent_template_param           = true
indent_member                   = 4
indent_switch_case              = 4
indent_switch_pp                = false
indent_label                    = 0
indent_access_spec              = -4
indent_paren_close              = 2
indent_paren_after_func_def     = true
indent_paren_after_func_decl    = true
indent_paren_after_func_call    = true
indent_align_assign             = false
indent_token_after_brace        = false
indent_cpp_lambda_body          = true
indent_ternary_operator         = 1
nl_assign_leave_one_liners      = true
nl_class_leave_one_liners       = true
nl_enum_leave_one_liners        = true
nl_getset_leave_one_liners      = true
nl_func_leave_one_liners        = true
nl_cpp_lambda_leave_one_liners  = true
nl_cpp_ldef_brace               = add
nl_if_leave_one_liners          = true
nl_start_of_file                = remove
nl_end_of_file                  = force
nl_enum_brace                   = add
nl_struct_brace                 = add
nl_union_brace                  = add
nl_if_brace                     = add
nl_brace_else                   = add
nl_else_brace                   = add
nl_else_if                      = remove
nl_before_if_closing_paren      = remove
nl_try_brace                    = add
nl_for_brace                    = add
nl_catch_brace                  = add
nl_brace_catch                  = add
nl_while_brace                  = add
nl_do_brace                     = add
nl_brace_while                  = remove
nl_switch_brace                 = add
nl_multi_line_define            = true
nl_before_case                  = true
nl_after_case                   = true
nl_case_colon_brace             = add
nl_namespace_brace              = add
nl_template_class               = add
nl_class_brace                  = add
nl_enum_own_lines               = add
nl_func_scope_name              = remove
nl_func_paren                   = remove
nl_func_def_paren               = remove
nl_func_call_paren              = remove
nl_func_call_paren_empty        = remove
nl_func_decl_start_multi_line   = true
nl_func_def_start_multi_line    = true
nl_func_decl_args_multi_line    = true
nl_func_def_args_multi_line     = true
nl_func_decl_end                = remove
nl_func_def_end                 = remove
nl_func_decl_empty              = remove
nl_func_def_empty               = remove
nl_func_call_empty              = remove
nl_func_call_start_multi_line   = true
nl_func_call_args_multi_line    = true
nl_fdef_brace                   = add
nl_after_semicolon              = true
nl_constr_colon                 = force
nl_split_if_one_liner           = true
nl_split_for_one_liner          = true
nl_split_while_one_liner        = true
nl_max                          = 3
nl_max_blank_in_func            = 2
nl_after_func_proto             = 1
nl_after_func_proto_group       = 2
nl_after_func_class_proto       = 1
nl_after_func_class_proto_group = 2
nl_before_func_body_def         = 1
nl_before_func_body_proto       = 1
nl_after_func_body              = 3
nl_after_func_body_class        = 3
nl_after_func_body_one_liner    = 1
nl_after_multiline_comment      = true
nl_after_struct                 = 3
nl_before_class                 = 3
nl_after_class                  = 3
nl_before_access_spec           = 2
nl_after_access_spec            = 1
nl_after_try_catch_finally      = 1
eat_blanks_after_open_brace     = true
eat_blanks_before_close_brace   = true
nl_remove_extra_newlines        = 1
nl_after_return                 = true
pos_constr_comma                = lead_break
pos_constr_colon                = lead_force
code_width                      = 160
ls_func_split_full              = true
ls_code_width                   = true
align_left_shift                = false
cmt_convert_tab_to_spaces       = true
mod_full_brace_for              = remove
mod_full_brace_if               = remove
mod_full_brace_if_chain         = true
mod_full_brace_while            = remove
mod_paren_on_return             = remove
mod_remove_extra_semicolon      = true
mod_remove_empty_return         = true
align_func_params               = true
align_func_params_thresh        = 140
sp_inside_type_brace_init_lst   = remove
nl_constr_init_args             = add